﻿using IBatisNet.DataMapper;

namespace Carson.DataAccess.PagePlugin
{
    public class PagePluginProvider
    {
        private static IPagePlugin pagePlugin;
        public static IPagePlugin GetPagePlugin(ISqlMapper sqlMapper)
        {
            if (pagePlugin == null)
            {
                lock (typeof(SqlMapper))
                {
                    if (pagePlugin == null) // double-check
                    {
                        InitPagePlugin(sqlMapper);
                    }
                }
            }
            return pagePlugin;
        }

        private static void InitPagePlugin(ISqlMapper sqlMapper)
        {
            if (sqlMapper.DataSource.DbProvider.AssemblyName.StartsWith("System.Data.SQLite"))
            {
                pagePlugin = new SqlitePagePlugin();
            }
            else if (sqlMapper.DataSource.DbProvider.AssemblyName.StartsWith("System.Data"))
            {
                pagePlugin = new SqlServerPagePlugin();
            }
        }
    }
}
